package compilador.analisadorSintatico.operacoes;

import compilador.analisadorSintatico.Producao;
import compilador.analisadorSintatico.simboloGramatical.NaoTerminal;
import compilador.analisadorSintatico.simboloGramatical.SimboloGramatical;

/**
 * Classe que implementa a análise sintática de uma expressão aritimética.
 *
 * @author Joao Luiz
 */
public class EXP_ARIT extends Producao
{
    //<EXP_ARIT> ::= <TERMO> <EXP_ARIT_X>
    @Override
    public void setSimbolo() {
        this.simbolo = new NaoTerminal(this.getClass().getSimpleName());
    }

    @Override
    public SimboloGramatical derivar() throws Exception {   
        
        Producao termo = new TERMO();
        ((NaoTerminal)  this.simbolo).add(termo.derivar());

        Producao expAritX = new EXP_ARIT_X();
        ((NaoTerminal)  this.simbolo).add(expAritX.derivar());

        return ((NaoTerminal)  this.simbolo);
     }

}